﻿using System;
using System.ComponentModel;
using System.Linq;
using System.Reflection;

namespace JTG.ServiceInterface
{
    public enum FunctionType
    {
        隆昌妇幼保健院签到机,
        德阳人民医院HIS_SOAP,
        资中中医院,
        大安妇幼保健院,
        德阳精神病院,
        //桥接
        德阳人民医院HIS,
        //打印机
        HP405
    }

    /// <summary>
    /// 签到卡类型
    /// </summary>
    public enum CheckInType
    {
        /// <summary>
        /// 就诊卡
        /// </summary>
        Card = 1,
        /// <summary>
        /// 电子健康卡
        /// </summary>
        ElectronicCard = 2,
        /// <summary>
        /// 微信二维码
        /// </summary>
        WxQrCode = 3
    }

    public enum SignStatus
    {
        /// <summary>
        /// 错误
        /// </summary>
        [Description("错误")]
        Error = -1,
        /// <summary>
        /// 1-签到成功
        /// </summary>
        [Description("签到成功")]
        Success = 1,
        /// <summary>
        /// 2-重复签到
        /// </summary>
        [Description("重复签到")]
        SignRepeat = 2,
        /// <summary>
        /// 3-过号签到
        /// </summary>
        [Description("过号签到")]
        Passed = 3,
        /// <summary>
        /// 4-回诊签到
        /// </summary>
        [Description("回诊签到")]
        BackSign = 4
    }

    /// <summary>
    /// 枚举类扩展
    /// </summary>
    public static class EnumExtension
    {

        /// <summary>
        /// 获取特性 (DisplayAttribute) 的名称；如果未使用该特性，则返回枚举的名称。
        /// </summary>
        /// <param name="enumValue"></param>
        /// <returns></returns>
        //public static string GetDisplayName(this Enum enumValue)
        //{
        //    FieldInfo fieldInfo = enumValue.GetType().GetField(enumValue.ToString());
        //    DisplayAttribute[] attrs =
        //        fieldInfo.GetCustomAttributes(typeof(DisplayAttribute), false) as DisplayAttribute[];

        //    return attrs.Length > 0 ? attrs[0].Name : enumValue.ToString();
        //}

        /// <summary>
        /// 获取特性 (DisplayAttribute) 的说明；如果未使用该特性，则返回枚举的名称。
        /// </summary>
        /// <param name="enumValue"></param>
        /// <returns></returns>
        public static string GetDisplayDescription(this Enum enumValue)
        {
            var fieldInfo = enumValue.GetType().GetField(enumValue.ToString());
            return fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false) is DescriptionAttribute[] attrs && attrs.Length > 0 ? attrs[0].Description : enumValue.ToString();
        }
    }


}